package facilius.controller.action.espaco;

import facilius.model.ServiceLocator;
import facilius.model.pojo.Aula;
import facilius.model.pojo.UsuarioCurso;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.mentawai.core.BaseAction;

/**
 *
 * @author Graciano
 */
public class EspacoAulasReadAction extends BaseAction {

    @Override
    public String execute() throws Exception {
        String consequence = ERROR;
        try {

            Map<String, Object> criteria = new HashMap<String, Object>();
            criteria.put("usuarioId", session.getAttribute("userId").toString());
            List<UsuarioCurso> users = ServiceLocator.getUsuarioCursoService().readByCriteria(criteria);

            Map<String, String> cursos = new HashMap<String, String>();
            for (int i = 0; i < users.size(); i++) {
                cursos.put(users.get(i).getCurso().getId().toString(), users.get(i).getCurso().getDescricao());
            }
            output.setValue("cursoOptions", cursos);

            if (cursos.size() > 0) {

                Long curso = input.getLong("cursoId");
                Integer ano = input.getInt("ano");
                List<UsuarioCurso> usuarioCurso = null;

//                if (curso == -1) {
//                    curso = users.get(0).getCurso().getId();
//                }

                if (curso != null && curso > 0) {
                    Map<String, Object> criteriaNotas = new HashMap<String, Object>();
                    criteriaNotas.put("usuarioId", session.getAttribute("userId").toString());
                    criteriaNotas.put("cursoId", curso);
                    usuarioCurso = ServiceLocator.getUsuarioCursoService().readByCriteria(criteriaNotas);

                    Map<String, Object> criteriaAulas = new HashMap<String, Object>();
                    criteriaAulas.put("matricula", usuarioCurso.get(0).getMatricula());

                    if (ano == null || ano <= 0){
                        Calendar cal = Calendar.getInstance();
                        ano = cal.get(Calendar.YEAR);
                    }
                    criteriaAulas.put("ano", ano);
                    output.setValue("ano", ano);

                    List<Aula> aulas = ServiceLocator.getAulaService().readByCriteria(criteriaAulas);

                    output.setValue("pojos", aulas);

                }
            }
            consequence = SUCCESS;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return consequence;
    }
}
